【jsonモジュール】PythonでJSONファイルに日本語を出力する方法 【Unicodeエスケープなし】

您所在的位置:网站首页 Python json unicode-escape 【jsonモジュール】PythonでJSONファイルに日本語を出力する方法 【Unicodeエスケープなし】

【jsonモジュール】PythonでJSONファイルに日本語を出力する方法 【Unicodeエスケープなし】

2024-07-05 05:30| 来源: 网络整理| 查看: 265

スポンサーリンク はじめに

Python組み込みの「json」モジュールで、JSONファイルに日本語をそのまま出力する方法を解説します。

jsonモジュールでは、日本語の文字列をJSONファイルに出力する際、「\u30e6」のようなUnicodeエスケープ(シーケンス)という形式で出力します。別プログラム・環境で読み込むには便利な形式ですが、人が読むには非常に見ずらい形式です。

そこで今回は、日本語の文字列をエスケープシーケンスなしで出力する方法について解説します。

~ この記事の内容 ~ はじめに 実行結果 全体コード コードのポイント

環境

この記事は以下の環境で作成しています。

環境 バージョンなど Python 3.9.6 OS Wiindows10

実行結果

後述の「日本語のJSONファイルを出力するコード」の実行結果です。

「enseure_ascii = false」の指定の有無で、以下のようにUnicodeエスケープあり・なしの日本語が出力されます。

人が読めるかたちで日本語を出力する場合は、「ensure_ascii=False」を指定します。

ensure_ascii=False の指定なし

「Roles」の部分が、Unicodeエスケープの形式で表示されています。

{ "Email": "[email protected]", "Active": true, "CreatedDate": "2013-01-20T00:00:00Z", "Roles": [ "\u30e6\u30fc\u30b6\u30fc", "\u7ba1\u7406\u8005" ] } ensure_ascii=False の指定あり

「Roles」の部分が、人が読める形で出力されています。

{ "Email": "[email protected]", "Active": true, "CreatedDate": "2013-01-20T00:00:00Z", "Roles": [ "ユーザー", "管理者" ] } 全体コード

「 日本語のJSONファイルを出力するコード 」の全体です。ポイント部分は後述の「コードのポイント」で詳しく解説します。

import json # JSONファイルを作成するための辞書を作成します # (Rolesの部分に日本語の文字列が含まれています) dict = {} dict["Email"] = "[email protected]" dict["Active"] = True dict["CreatedDate"] = "2013-01-20T00:00:00Z" dict["Roles"] = ["ユーザー", "管理者"] # ensure_ascii "なし" で出力します with open("output_uniEscape.json", "w", encoding="utf-8" ) as outputFile: json.dump(dict, outputFile, indent=2 ) # ensure_ascii "あり" で出力します with open("output_jp.json", "w", encoding="utf-8") as outputFile: json.dump(dict, outputFile, indent=2, ensure_ascii=False )

コードのポイント 「ensure_ascii = false」 の指定で日本語がそのまま出力できる

JSONファイルを出力するdump関数に「ensure_ascii = False 」を指定することで、日本語の文字列をそのままファイルに出力できます。

# ensure_ascii "なし" で出力します with open("output_uniEscape.json", "w", encoding="utf-8" ) as outputFile: json.dump(dict, outputFile, indent=2 ) # ensure_ascii "あり" で出力します with open("output_jp.json", "w", encoding="utf-8") as outputFile: json.dump(dict, outputFile, indent=2, ensure_ascii=False )

出力結果 ensure_ascii = False あり { "Email": "[email protected]", "Active": true, "CreatedDate": "2013-01-20T00:00:00Z", "Roles": [ "ユーザー", "管理者" ] }

出力結果 ensure_ascii = False なし { "Email": "[email protected]", "Active": true, "CreatedDate": "2013-01-20T00:00:00Z", "Roles": [ "\u30e6\u30fc\u30b6\u30fc", "\u7ba1\u7406\u8005" ] }

【参考】JSONファイルの文字コードについて

pythonのコードはデフォルトで「utf-8」が設定されていますが、open関数を書き込みモードで使うと、デフォルトで「shift-jis」のファイルが作成されます。

VisualStudioCodeで、Pythonコードと一緒にJSONファイルを開くと今度は、「shift-jisに起因した文字化け」が起きて混乱するので、open関数には「encode=”utf-8″」の指定を入れることお勧めします。

まとめ

Python組み込みの「json」モジュールを使って、 JSONファイルに日本語をそのまま出力する方法を解説しました。 参考になればうれしいです。

お知らせ

3月号の『日経ソフトウェア』はPythonの特集。穴埋め式クイズで学ぶPython入門や、PythonでExcelを動かす方法などが特集されています。

日経ソフトウエア 2024年3月号 [雑誌] 編集:日経ソフトウエア ¥1,925 (2024/02/20 06:32時点 | Amazon調べ) 口コミを見る Amazon \楽天ポイント4倍セール!/ 楽天市場 \ポイント5%還元!/ Yahooショッピング ポチップ

jsonモジュールのその他の使い方

このブログではjsonモジュールの以下の内容も公開しています。興味のある方は是非以下の記事もご覧ください。

jsonモジュールでJSONファイルを読み込む方法 【jsonモジュール】Pythonで「JSONファイル」を読み込む方法【load】 はじめに Python組み込みのjsonモジュールの「load関数」を使って、JSONファイルを読み込む方法を解説します。loa...

jsonモジュールでJSONファイル・JSON文字列を出力する方法

【jsonモジュール】Pythonで「JSONファイル」を出力する方法 【dump】 はじめに Python組み込みの「json」モジュールを使って、辞書型のデータから、JSONファイルを出力する方法を解説します。... 質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

JSON programing Python ABOUT ME えす 現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。 BLOG:https://tech-and-investment.com/


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3